package com.quanyan.club.service;

import com.quanyan.activity.entity.ActivityInfo;
import com.quanyan.club.entity.RespClubBaseInfo;
import com.quanyan.club.entity.db.TbAASettlementRefundDetail;
import com.quanyan.club.entity.db.TbClub;
import com.quanyan.club.entity.db.TbClubActivity;
import com.quanyan.club.entity.db.TbClubWithdrawalsApply;
import com.quanyan.club.entity.vo.msg.ActivityRelatedMsg;
import com.quanyan.club.entity.vo.resp.RespClubActivity;
import com.quanyan.club.entity.vo.resp.RespClubFinanceBillDetail;
import com.quanyan.im.entity.req.ModifyIMGroup;
import com.quanyan.im.entity.req.ReqCreateIMGroup;
import com.quanyan.user.response.RespUserInfoBase;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * Created by zhuo.shi on 2016/7/20.
 */
public interface CppService {

    String createIMGroup(ReqCreateIMGroup reqCreateIMGroup);

    void modifyGroup(ModifyIMGroup modifyIMGroup);

    boolean addOrDelIMGroupMember(int uid, int moudleId, String groupid, List<Integer> uidList, boolean add);

    void pushWithdrawNotifyMessage(TbClubWithdrawalsApply apply, boolean success, String reason);

    void pushClubMemberJoinMsg(RespUserInfoBase user, TbClub club, List<Integer> to, String remark,
                               boolean invite, int inviteType, boolean apply);

    void pushClubMemberOutMsg(String imgUrl, int uid, int clubId, String msg, List<Integer> to, int type, int larkAppId);

    void pushJoinClubMsg(TbClub club, List<Integer> to, RespUserInfoBase user,int larkAppId);

    void pushAcceptJoinClubInvite(TbClub club, RespUserInfoBase userInfo, List<Integer> to, int larkAppId);

    void pushActivityStartingMsg(ActivityInfo activityInfo, List<Integer> to);

    void pushCancelActivity(RespClubActivity respClubActivity, int larkAppId);

    void pushCancelActivityToMember(RespClubActivity respClubActivity, String refundOrderNo, int larkAppId);

    void pushCancelActivityToMainderMember(RespClubActivity respClubActivity, Integer uid);

    void pushCancelActivityOrder(RespClubActivity respClubActivity, Integer orderUid, int orderId);

    void pushActivityAutoSettle(ActivityRelatedMsg activityRelatedMsg,
                                RespClubFinanceBillDetail respClubFinanceBillDetail);

    void pushActivitySignUp(RespClubActivity respClubActivity, Integer currentUid, int larkAppId);

    void pushRefundActivityOrder(RespClubActivity respClubActivity,
                                 Integer orderUid, String businessOrderNo);

    void pushCreateActivity(RespClubActivity respClubActivity);

    void pushUpdateActivity(RespClubActivity respClubActivity);

    void pushActivityEndingMsg(int activityId, String logoUrl, int feeType, String posterUrl, String name);

    void pushActivitySignUpSuccess(ActivityRelatedMsg activityRelatedMsg);

    void pushActivityAppraise(ActivityRelatedMsg activityRelatedMsg);

    void pushActivitySettlement(ActivityRelatedMsg activityRelatedMsg,
                                RespClubFinanceBillDetail respClubFinanceBillDetail);

    void pushOfflineRechargeDebutMsg(int clubId, int uid, BigDecimal amount,
                                     BigDecimal usableAmount, String remark, boolean recharge);

    void pushClubAnnouncement(Integer clubId,String content,String title,TbClub club);

    void pushAdminDeleteClub(Integer clubId);

    void pushAdminDeleteClubActivity(Integer activityId);

    void pushDisableClub(Integer clubId, List<Integer> to);

    void pushJoinClub2AllMember(TbClub club, RespUserInfoBase userInfo, List<Integer> to);

    void pushClubTaskNotify(String taskName, Map<Integer, Integer> clubIdUidMap, Map<Integer, String> clubIdLogoMap);

    void pushClubCommonMsg(String clubLog, String msg, List<Integer> to);

    void pullClubSuccess2DrawAward(String logo, String msg, List<Integer> to);
}
